package com.xiaoma.thread.wait.wait;

import java.util.Date;

/**
 * @author xiaomacdut
 * @date 2020年2月4日 下午5:05:06
 */
public class WaitTest{
    
    public static void main(String [] args) throws InterruptedException {
    	Object obj = new Object();
    	ThreadA t1 = new ThreadA("thread1",obj);

    	synchronized(obj){
            try{
                // 启动线程
                System.out.println(Thread.currentThread().getName() + " start t1");
              //t1线程启动后并没有获取到锁，因为main线程已经进入同步代码块了。
              // 只有执行到obj.wait后main线程才会释放锁，然后t1线程获取锁执行唤醒main线程
                t1.start();
                // 主线程等待t1通过notify唤醒。
                System.out.println(Thread.currentThread().getName() + " start  wait()" + new Date());
                // 不是使t1线程等待，而是当前执行wait的线程等待，wait方法必须放在同步方法中或者同步块
                obj.wait();
                System.out.println(Thread.currentThread().getName() + " continue," + new Date());
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }


    
}
